
#include "swap.c"

#ifndef SORT_BUBBLE
#define SORT_BUBBLE

void bubble_Sort(ElementType a[], int length) {
    // 排序 P 次
    for (int p=length-1; p >= 0; p--) {
        int flag = 0;
        for (int i=0; i < p; i++) {
            // 一趟冒泡
            if (comparator(a[i], a[i+1]) > 0) {
                swap(&a[i], &a[i+1]);
                flag = 1; // 标识发生了交换
            }
        }
        if (flag == 0) {
            // 全程无交换
            break;
        }
    }
}

#endif
